#pragma once

#include "tester_base.hpp"

#include <random>

class MergeSortTester : public BaseTester {
 public:
  MergeSortTester(int64_t num_size) :
    _num_size(num_size) {};
  void DataGenerate() override;
  void Baseline() override {
    _baseline_result = Baseline(_input_data);
  };
  void Implementation() override {
    _impl_result = Implementation(_input_data);
  };
  bool CheckResult() override;

  std::vector<int64_t> Baseline(const std::vector<int64_t> &input);
  std::vector<int64_t> Implementation(const std::vector<int64_t> &input);
 private:
  int64_t _num_size;
  std::vector<int64_t> _input_data;
  std::vector<int64_t> _baseline_result;
  std::vector<int64_t> _impl_result;
};
